// 2013-7-29下午07:29:41  net.betou.core.service.PostDataListener.java

package net.betou.core.service;

import java.util.Map;

/**
 * 发送数据监听器
 * 
 * @author 叶装装
 */
public interface PostDataListener< T > {

	/**
	 * 保存之前执行
	 * 
	 * @param bean
	 */
	public void preSave( T bean );

	/**
	 * 保存之后执行
	 * 
	 * @param bean
	 */
	public void afterSave( T bean );

	/**
	 * 修改之前执行
	 * 
	 * @param bean
	 *            修改前的bean
	 * @return 获取一些需要在afterChange中使用的值。
	 */
	public Map< String, Object > preChange( T bean );

	/**
	 * 修改之后执行
	 * 
	 * @param bean
	 *            修改后的bean
	 * @param map
	 *            从{@link #preChange(bean)}方法返回的值。
	 */
	public void afterChange( T bean, Map< String, Object > map );

	/**
	 * 删除之前执行
	 * 
	 * @param bean
	 */
	public void preDelete( T bean );

	/**
	 * 删除之后执行
	 * 
	 * @param bean
	 */
	public void afterDelete( T bean );
}
